home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / test / test_gettext.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2005-10-18  |  17KB  |  321 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.4)
  3.  
  4. import os
  5. import base64
  6. import shutil
  7. import gettext
  8. import unittest
  9. from test.test_support import run_suite
  10. GNU_MO_DATA = '3hIElQAAAAAGAAAAHAAAAEwAAAALAAAAfAAAAAAAAACoAAAAFQAAAKkAAAAjAAAAvwAAAKEAAADj\nAAAABwAAAIUBAAALAAAAjQEAAEUBAACZAQAAFgAAAN8CAAAeAAAA9gIAAKEAAAAVAwAABQAAALcD\nAAAJAAAAvQMAAAEAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABQAAAAYAAAACAAAAAFJh\neW1vbmQgTHV4dXJ5IFlhY2gtdABUaGVyZSBpcyAlcyBmaWxlAFRoZXJlIGFyZSAlcyBmaWxlcwBU\naGlzIG1vZHVsZSBwcm92aWRlcyBpbnRlcm5hdGlvbmFsaXphdGlvbiBhbmQgbG9jYWxpemF0aW9u\nCnN1cHBvcnQgZm9yIHlvdXIgUHl0aG9uIHByb2dyYW1zIGJ5IHByb3ZpZGluZyBhbiBpbnRlcmZh\nY2UgdG8gdGhlIEdOVQpnZXR0ZXh0IG1lc3NhZ2UgY2F0YWxvZyBsaWJyYXJ5LgBtdWxsdXNrAG51\nZGdlIG51ZGdlAFByb2plY3QtSWQtVmVyc2lvbjogMi4wClBPLVJldmlzaW9uLURhdGU6IDIwMDAt\nMDgtMjkgMTI6MTktMDQ6MDAKTGFzdC1UcmFuc2xhdG9yOiBKLiBEYXZpZCBJYsOhw7FleiA8ai1k\nYXZpZEBub29zLmZyPgpMYW5ndWFnZS1UZWFtOiBYWCA8cHl0aG9uLWRldkBweXRob24ub3JnPgpN\nSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9aXNvLTg4\nNTktMQpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBub25lCkdlbmVyYXRlZC1CeTogcHlnZXR0\nZXh0LnB5IDEuMQpQbHVyYWwtRm9ybXM6IG5wbHVyYWxzPTI7IHBsdXJhbD1uIT0xOwoAVGhyb2F0\nd29iYmxlciBNYW5ncm92ZQBIYXkgJXMgZmljaGVybwBIYXkgJXMgZmljaGVyb3MAR3V2ZiB6YnFo\neXIgY2ViaXZxcmYgdmFncmVhbmd2YmFueXZtbmd2YmEgbmFxIHlicG55dm1uZ3ZiYQpmaGNjYmVn\nIHNiZSBsYmhlIENsZ3ViYSBjZWJ0ZW56ZiBvbCBjZWJpdnF2YXQgbmEgdmFncmVzbnByIGdiIGd1\nciBUQUgKdHJnZ3JrZyB6cmZmbnRyIHBuZ255YnQgeXZvZW5lbC4AYmFjb24Ad2luayB3aW5rAA==\n'
  11. UMO_DATA = '3hIElQAAAAACAAAAHAAAACwAAAAFAAAAPAAAAAAAAABQAAAABAAAAFEAAAAPAQAAVgAAAAQAAABm\nAQAAAQAAAAIAAAAAAAAAAAAAAAAAAAAAYWLDngBQcm9qZWN0LUlkLVZlcnNpb246IDIuMApQTy1S\nZXZpc2lvbi1EYXRlOiAyMDAzLTA0LTExIDEyOjQyLTA0MDAKTGFzdC1UcmFuc2xhdG9yOiBCYXJy\neSBBLiBXQXJzYXcgPGJhcnJ5QHB5dGhvbi5vcmc+Ckxhbmd1YWdlLVRlYW06IFhYIDxweXRob24t\nZGV2QHB5dGhvbi5vcmc+Ck1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFp\nbjsgY2hhcnNldD11dGYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0CkdlbmVyYXRl\nZC1CeTogbWFudWFsbHkKAMKkeXoA\n'
  12. MMO_DATA = '3hIElQAAAAABAAAAHAAAACQAAAADAAAALAAAAAAAAAA4AAAAeAEAADkAAAABAAAAAAAAAAAAAAAA\nUHJvamVjdC1JZC1WZXJzaW9uOiBObyBQcm9qZWN0IDAuMApQT1QtQ3JlYXRpb24tRGF0ZTogV2Vk\nIERlYyAxMSAwNzo0NDoxNSAyMDAyClBPLVJldmlzaW9uLURhdGU6IDIwMDItMDgtMTQgMDE6MTg6\nNTgrMDA6MDAKTGFzdC1UcmFuc2xhdG9yOiBKb2huIERvZSA8amRvZUBleGFtcGxlLmNvbT4KSmFu\nZSBGb29iYXIgPGpmb29iYXJAZXhhbXBsZS5jb20+Ckxhbmd1YWdlLVRlYW06IHh4IDx4eEBleGFt\ncGxlLmNvbT4KTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFy\nc2V0PWlzby04ODU5LTE1CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFi\nbGUKR2VuZXJhdGVkLUJ5OiBweWdldHRleHQucHkgMS4zCgA=\n'
  13. LOCALEDIR = os.path.join('xx', 'LC_MESSAGES')
  14. MOFILE = os.path.join(LOCALEDIR, 'gettext.mo')
  15. UMOFILE = os.path.join(LOCALEDIR, 'ugettext.mo')
  16. MMOFILE = os.path.join(LOCALEDIR, 'metadata.mo')
  17.  
  18. try:
  19.     LANG = os.environ['LANGUAGE']
  20. except:
  21.     LANG = 'en'
  22.  
  23.  
  24. class GettextBaseTest(unittest.TestCase):
  25.     
  26.     def setUp(self):
  27.         if not os.path.isdir(LOCALEDIR):
  28.             os.makedirs(LOCALEDIR)
  29.         
  30.         fp = open(MOFILE, 'wb')
  31.         fp.write(base64.decodestring(GNU_MO_DATA))
  32.         fp.close()
  33.         fp = open(UMOFILE, 'wb')
  34.         fp.write(base64.decodestring(UMO_DATA))
  35.         fp.close()
  36.         fp = open(MMOFILE, 'wb')
  37.         fp.write(base64.decodestring(MMO_DATA))
  38.         fp.close()
  39.         os.environ['LANGUAGE'] = 'xx'
  40.  
  41.     
  42.     def tearDown(self):
  43.         os.environ['LANGUAGE'] = LANG
  44.         shutil.rmtree(os.path.split(LOCALEDIR)[0])
  45.  
  46.  
  47.  
  48. class GettextTestCase1(GettextBaseTest):
  49.     
  50.     def setUp(self):
  51.         GettextBaseTest.setUp(self)
  52.         self.localedir = os.curdir
  53.         self.mofile = MOFILE
  54.         gettext.install('gettext', self.localedir)
  55.  
  56.     
  57.     def test_some_translations(self):
  58.         eq = self.assertEqual
  59.         eq(_('albatross'), 'albatross')
  60.         eq(_(u'mullusk'), 'bacon')
  61.         eq(_('Raymond Luxury Yach-t'), 'Throatwobbler Mangrove')
  62.         eq(_(u'nudge nudge'), 'wink wink')
  63.  
  64.     
  65.     def test_double_quotes(self):
  66.         eq = self.assertEqual
  67.         eq(_('albatross'), 'albatross')
  68.         eq(_(u'mullusk'), 'bacon')
  69.         eq(_('Raymond Luxury Yach-t'), 'Throatwobbler Mangrove')
  70.         eq(_(u'nudge nudge'), 'wink wink')
  71.  
  72.     
  73.     def test_triple_single_quotes(self):
  74.         eq = self.assertEqual
  75.         eq(_('albatross'), 'albatross')
  76.         eq(_(u'mullusk'), 'bacon')
  77.         eq(_('Raymond Luxury Yach-t'), 'Throatwobbler Mangrove')
  78.         eq(_(u'nudge nudge'), 'wink wink')
  79.  
  80.     
  81.     def test_triple_double_quotes(self):
  82.         eq = self.assertEqual
  83.         eq(_('albatross'), 'albatross')
  84.         eq(_(u'mullusk'), 'bacon')
  85.         eq(_('Raymond Luxury Yach-t'), 'Throatwobbler Mangrove')
  86.         eq(_(u'nudge nudge'), 'wink wink')
  87.  
  88.     
  89.     def test_multiline_strings(self):
  90.         eq = self.assertEqual
  91.         eq(_('This module provides internationalization and localization\nsupport for your Python programs by providing an interface to the GNU\ngettext message catalog library.'), 'Guvf zbqhyr cebivqrf vagreangvbanyvmngvba naq ybpnyvmngvba\nfhccbeg sbe lbhe Clguba cebtenzf ol cebivqvat na vagresnpr gb gur TAH\ntrggrkg zrffntr pngnybt yvoenel.')
  92.  
  93.     
  94.     def test_the_alternative_interface(self):
  95.         eq = self.assertEqual
  96.         fp = open(self.mofile, 'rb')
  97.         t = gettext.GNUTranslations(fp)
  98.         fp.close()
  99.         t.install()
  100.         eq(_('nudge nudge'), 'wink wink')
  101.         t.install(unicode = True)
  102.         eq(_('mullusk'), 'bacon')
  103.  
  104.  
  105.  
  106. class GettextTestCase2(GettextBaseTest):
  107.     
  108.     def setUp(self):
  109.         GettextBaseTest.setUp(self)
  110.         self.localedir = os.curdir
  111.         gettext.bindtextdomain('gettext', self.localedir)
  112.         gettext.textdomain('gettext')
  113.         self._ = gettext.gettext
  114.  
  115.     
  116.     def test_bindtextdomain(self):
  117.         self.assertEqual(gettext.bindtextdomain('gettext'), self.localedir)
  118.  
  119.     
  120.     def test_textdomain(self):
  121.         self.assertEqual(gettext.textdomain(), 'gettext')
  122.  
  123.     
  124.     def test_some_translations(self):
  125.         eq = self.assertEqual
  126.         eq(self._('albatross'), 'albatross')
  127.         eq(self._(u'mullusk'), 'bacon')
  128.         eq(self._('Raymond Luxury Yach-t'), 'Throatwobbler Mangrove')
  129.         eq(self._(u'nudge nudge'), 'wink wink')
  130.  
  131.     
  132.     def test_double_quotes(self):
  133.         eq = self.assertEqual
  134.         eq(self._('albatross'), 'albatross')
  135.         eq(self._(u'mullusk'), 'bacon')
  136.         eq(self._('Raymond Luxury Yach-t'), 'Throatwobbler Mangrove')
  137.         eq(self._(u'nudge nudge'), 'wink wink')
  138.  
  139.     
  140.     def test_triple_single_quotes(self):
  141.         eq = self.assertEqual
  142.         eq(self._('albatross'), 'albatross')
  143.         eq(self._(u'mullusk'), 'bacon')
  144.         eq(self._('Raymond Luxury Yach-t'), 'Throatwobbler Mangrove')
  145.         eq(self._(u'nudge nudge'), 'wink wink')
  146.  
  147.     
  148.     def test_triple_double_quotes(self):
  149.         eq = self.assertEqual
  150.         eq(self._('albatross'), 'albatross')
  151.         eq(self._(u'mullusk'), 'bacon')
  152.         eq(self._('Raymond Luxury Yach-t'), 'Throatwobbler Mangrove')
  153.         eq(self._(u'nudge nudge'), 'wink wink')
  154.  
  155.     
  156.     def test_multiline_strings(self):
  157.         eq = self.assertEqual
  158.         eq(self._('This module provides internationalization and localization\nsupport for your Python programs by providing an interface to the GNU\ngettext message catalog library.'), 'Guvf zbqhyr cebivqrf vagreangvbanyvmngvba naq ybpnyvmngvba\nfhccbeg sbe lbhe Clguba cebtenzf ol cebivqvat na vagresnpr gb gur TAH\ntrggrkg zrffntr pngnybt yvoenel.')
  159.  
  160.  
  161.  
  162. class PluralFormsTestCase(GettextBaseTest):
  163.     
  164.     def setUp(self):
  165.         GettextBaseTest.setUp(self)
  166.         self.mofile = MOFILE
  167.  
  168.     
  169.     def test_plural_forms1(self):
  170.         eq = self.assertEqual
  171.         x = gettext.ngettext('There is %s file', 'There are %s files', 1)
  172.         eq(x, 'Hay %s fichero')
  173.         x = gettext.ngettext('There is %s file', 'There are %s files', 2)
  174.         eq(x, 'Hay %s ficheros')
  175.  
  176.     
  177.     def test_plural_forms2(self):
  178.         eq = self.assertEqual
  179.         fp = open(self.mofile, 'rb')
  180.         t = gettext.GNUTranslations(fp)
  181.         fp.close()
  182.         x = t.ngettext('There is %s file', 'There are %s files', 1)
  183.         eq(x, 'Hay %s fichero')
  184.         x = t.ngettext('There is %s file', 'There are %s files', 2)
  185.         eq(x, 'Hay %s ficheros')
  186.  
  187.     
  188.     def test_hu(self):
  189.         eq = self.assertEqual
  190.         f = gettext.c2py('0')
  191.         s = []([ str(f(x)) for x in range(200) ])
  192.         eq(s, '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000')
  193.  
  194.     
  195.     def test_de(self):
  196.         eq = self.assertEqual
  197.         f = gettext.c2py('n != 1')
  198.         s = []([ str(f(x)) for x in range(200) ])
  199.         eq(s, '10111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111')
  200.  
  201.     
  202.     def test_fr(self):
  203.         eq = self.assertEqual
  204.         f = gettext.c2py('n>1')
  205.         s = []([ str(f(x)) for x in range(200) ])
  206.         eq(s, '00111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111')
  207.  
  208.     
  209.     def test_gd(self):
  210.         eq = self.assertEqual
  211.         f = gettext.c2py('n==1 ? 0 : n==2 ? 1 : 2')
  212.         s = []([ str(f(x)) for x in range(200) ])
  213.         eq(s, '20122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222')
  214.  
  215.     
  216.     def test_gd2(self):
  217.         eq = self.assertEqual
  218.         f = gettext.c2py('n==1 ? 0 : (n==2 ? 1 : 2)')
  219.         s = []([ str(f(x)) for x in range(200) ])
  220.         eq(s, '20122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222')
  221.  
  222.     
  223.     def test_lt(self):
  224.         eq = self.assertEqual
  225.         f = gettext.c2py('n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2')
  226.         s = []([ str(f(x)) for x in range(200) ])
  227.         eq(s, '20111111112222222222201111111120111111112011111111201111111120111111112011111111201111111120111111112011111111222222222220111111112011111111201111111120111111112011111111201111111120111111112011111111')
  228.  
  229.     
  230.     def test_ru(self):
  231.         eq = self.assertEqual
  232.         f = gettext.c2py('n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2')
  233.         s = []([ str(f(x)) for x in range(200) ])
  234.         eq(s, '20111222222222222222201112222220111222222011122222201112222220111222222011122222201112222220111222222011122222222222222220111222222011122222201112222220111222222011122222201112222220111222222011122222')
  235.  
  236.     
  237.     def test_pl(self):
  238.         eq = self.assertEqual
  239.         f = gettext.c2py('n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2')
  240.         s = []([ str(f(x)) for x in range(200) ])
  241.         eq(s, '20111222222222222222221112222222111222222211122222221112222222111222222211122222221112222222111222222211122222222222222222111222222211122222221112222222111222222211122222221112222222111222222211122222')
  242.  
  243.     
  244.     def test_sl(self):
  245.         eq = self.assertEqual
  246.         f = gettext.c2py('n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3')
  247.         s = []([ str(f(x)) for x in range(200) ])
  248.         eq(s, '30122333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333012233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333')
  249.  
  250.     
  251.     def test_security(self):
  252.         raises = self.assertRaises
  253.         raises(ValueError, gettext.c2py, "os.chmod('/etc/passwd',0777)")
  254.  
  255.  
  256.  
  257. class UnicodeTranslationsTest(GettextBaseTest):
  258.     
  259.     def setUp(self):
  260.         GettextBaseTest.setUp(self)
  261.         fp = open(UMOFILE, 'rb')
  262.         
  263.         try:
  264.             self.t = gettext.GNUTranslations(fp)
  265.         finally:
  266.             fp.close()
  267.  
  268.         self._ = self.t.ugettext
  269.  
  270.     
  271.     def test_unicode_msgid(self):
  272.         unless = self.failUnless
  273.         unless(isinstance(self._(''), unicode))
  274.         unless(isinstance(self._(u''), unicode))
  275.  
  276.     
  277.     def test_unicode_msgstr(self):
  278.         eq = self.assertEqual
  279.         eq(self._(u'ab\xc3\x9e'), u'\xc2\xa4yz')
  280.  
  281.  
  282.  
  283. class WeirdMetadataTest(GettextBaseTest):
  284.     
  285.     def setUp(self):
  286.         GettextBaseTest.setUp(self)
  287.         fp = open(MMOFILE, 'rb')
  288.         
  289.         try:
  290.             self.t = gettext.GNUTranslations(fp)
  291.         except:
  292.             self.tearDown()
  293.             raise 
  294.         finally:
  295.             fp.close()
  296.  
  297.  
  298.     
  299.     def test_weird_metadata(self):
  300.         info = self.t.info()
  301.         self.assertEqual(info['last-translator'], 'John Doe <jdoe@example.com>\nJane Foobar <jfoobar@example.com>')
  302.  
  303.  
  304.  
  305. def suite():
  306.     suite = unittest.TestSuite()
  307.     suite.addTest(unittest.makeSuite(GettextTestCase1))
  308.     suite.addTest(unittest.makeSuite(GettextTestCase2))
  309.     suite.addTest(unittest.makeSuite(PluralFormsTestCase))
  310.     suite.addTest(unittest.makeSuite(UnicodeTranslationsTest))
  311.     suite.addTest(unittest.makeSuite(WeirdMetadataTest))
  312.     return suite
  313.  
  314.  
  315. def test_main():
  316.     run_suite(suite())
  317.  
  318. if __name__ == '__main__':
  319.     test_main()
  320.  
  321.